package com.xiao.ojbakcendgateway.config;

import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import java.util.HashSet;
import java.util.Set;

/**
 * 初始化网关限流规则
 */
@Configuration
public class SentinelGatewayConfig {

    @PostConstruct
    public void initGatewayRules() {
        // 1. 路由维度限流规则（针对网关配置的路由ID）
        Set<GatewayFlowRule> rules = new HashSet<>();
        // 对用户服务路由限流：QPS阈值为50
        rules.add(new GatewayFlowRule("oj-bakcend-user-service")
                .setCount(50)  								    // 限流阈值
                .setIntervalSec(1)  						    // 统计窗口时间（秒）
                .setGrade(RuleConstant.FLOW_GRADE_QPS));  	    // 基于QPS限流

        // 对题目服务路由限流：QPS阈值为20
        rules.add(new GatewayFlowRule("oj-bakcend-question-service")
                .setCount(20)
                .setIntervalSec(1)
                .setGrade(RuleConstant.FLOW_GRADE_QPS));

        // 加载限流规则
        GatewayRuleManager.loadRules(rules);
        System.out.println("Sentinel 网关限流规则初始化完成！");
    }
}
